#pragma once
#include <Diablo/Root.hpp>

namespace Diablo
{
    /**/
    enum FilterCharId
    {
        FILTER_CHAR_DEFAULT,
        FILTER_CHAR_BARBARIAN,
        FILTER_CHAR_DEMONHUNTER,
        FILTER_CHAR_MONK,
        FILTER_CHAR_WITCHDOCTOR,
        FILTER_CHAR_WIZARD,
        FILTER_CHAR_COUNT,
    };

    /**/
    enum FilterPrimaryId
    {
        FILTER_PRI_1H,
        FILTER_PRI_2H,
        FILTER_PRI_OH,
        FILTER_PRI_ARMOR,
        FILTER_PRI_FOLLOWER,
    };

    /**/
    enum RarityId
    {
        RARITY_UNKNOWN,
        RARITY_INFERIOR,
        RARITY_NORMAL,
        RARITY_SUPERIOR,
        RARITY_MAGIC,
        RARITY_RARE,
        RARITY_LEGENDARY,
        RARITY_SET,
    };

    /**/
    enum GemTypeId
    {
        GEM_TYPE_EMPTY,
        GEM_TYPE_AMETHYST,
        GEM_TYPE_EMERALD,
        GEM_TYPE_RUBY,
        GEM_TYPE_TOPAZ,
    };

    /**/
    enum GemStatId
    {
        // amethyst
        GEM_STAT_VITALITY,
        GEM_STAT_LIFEP,
        GEM_STAT_LIFEONHIT,

        // emerald
        GEM_STAT_DEXTERITY,
        GEM_STAT_GOLDFIND,
        GEM_STAT_CRITICALHITDAMAGE,

        // ruby
        GEM_STAT_STRENGTH,
        GEM_STAT_BONUSEXPERIENCE,
        GEM_STAT_AVERAGEDAMAGE,

        // topaz
        GEM_STAT_INTELLIGENCE,
        GEM_STAT_MAGICFIND,
        GEM_STAT_PHYSICALDAMAGETOATTACKER,
    };

    /**/
    enum HoverStatId
    {
        HOVER_STAT_PERCENTDAMAGE,
    };

    /**/
    enum UiId
    {
        UI_BUTTON_SEARCH,
        UI_BUTTON_BID,
        UI_BUTTON_BIDCONFIRM,
        UI_BUTTON_BUYOUT,
        UI_BUTTON_BUYOUTCONFIRM,
        UI_BUTTON_CREATEAUCTION,
        UI_BUTTON_SENDTOSTASH,
        UI_BUTTON_LOGIN,
        UI_BUTTON_AUCTIONHOUSE,
        UI_BUTTON_OPTIONS,
        UI_BUTTON_OPTIONSLOGOUT,
        UI_BUTTON_PROFILECLOSE,
        
        UI_LBUTTON_PAGENEXT,
        UI_LBUTTON_SORTDPSARMOR,
        UI_LBUTTON_SORTBUYOUT,
        UI_LBUTTON_SORTTIMELEFT,
        UI_LBUTTON_CLEARPSTAT0,
        UI_LBUTTON_CLEARPSTAT1,
        UI_LBUTTON_CLEARPSTAT2,
        UI_LBUTTON_CLEARPSTAT3,
        UI_LBUTTON_CLEARPSTAT4,
        UI_LBUTTON_CLEARPSTAT5,
        UI_LBUTTON_SELLSCROLLUP,
        UI_LBUTTON_SELLSCROLLDOWN,
        UI_LBUTTON_SELLCANCEL0,
        UI_LBUTTON_SELLCANCELSIZE,

        UI_TAB_SEARCH,
        UI_TAB_SEARCH_EQUIPMENT,
        UI_TAB_SELL,
        UI_TAB_AUCTIONS,
        UI_TAB_COMPLETED,
        UI_TAB_STASHBAG1,
        UI_TAB_STASHBAG2,
        UI_TAB_STASHBAG3,

        UI_CONTAINER_STASHBOXSIZE,
        UI_CONTAINER_STASHBOX00,
        UI_CONTAINER_LISTICON0,
        UI_CONTAINER_LISTICONSIZE,
        UI_CONTAINER_SELLICON0,
        UI_CONTAINER_SELLICONSIZE,
        UI_CONTAINER_COMBOROWSIZE,
        UI_CONTAINER_UNIQUEROWSIZE,

        UI_INPUT_FILTERLEVELMIN,
        UI_INPUT_FILTERLEVELMAX,
        UI_INPUT_FILTERUNIQUE,
        UI_INPUT_FILTERBUYOUT,
        UI_INPUT_FILTERPSTAT0,
        UI_INPUT_FILTERPSTAT1,
        UI_INPUT_FILTERPSTAT2,
        UI_INPUT_FILTERPSTAT3,
        UI_INPUT_FILTERPSTAT4,
        UI_INPUT_FILTERPSTAT5,
        UI_INPUT_MAXBID,
        UI_INPUT_SELLSTARTING,
        UI_INPUT_SELLBUYOUT,
        UI_INPUT_LOGINACCOUNT,
        UI_INPUT_LOGINPASSWORD,

        UI_COMBO_RARITY,
        UI_COMBO_CHARACTER,
        UI_COMBO_PRIMARY,
        UI_COMBO_SECONDARY,
        UI_COMBO_PSTAT0,
        UI_COMBO_PSTAT1,
        UI_COMBO_PSTAT2,
        UI_COMBO_PSTAT3,
        UI_COMBO_PSTAT4,
        UI_COMBO_PSTAT5,

        UI_POPUP_AH,
        UI_POPUP_ERROR,
        UI_POPUP_UNIQUE,

        UI_OTHER_GROUND,

        UI_COUNT
    };

    /**/
    enum ComboId
    {
        COMBO_RARITY,
        COMBO_CHARACTER,
        COMBO_PRIMARY,
        COMBO_SECONDARY,
        COMBO_PSTAT0,
        COMBO_PSTAT1,
        COMBO_PSTAT2,
        COMBO_PSTAT3,
        COMBO_PSTAT4,
        COMBO_PSTAT5,

        COMBO_COUNT,
    };

    /**/
    enum LocaleGroup
    {
        LOCALE_GEMSTAT,
        LOCALE_GEMTYPE,
        LOCALE_HOVERSTAT,
    };
}
